/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

京东云DDoS防护包相关接口
京东云DDoS防护包相关接口

OpenAPI spec version: v1
Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/


#ifndef AntiproClient_h
#define AntiproClient_h


#import <JDCloudOCSDKCore/JDCloudOCSDKCore.h>
#import <JDCloudOCSDKAntipro/AntiproApiModel.h>

@interface AntiproClient : NSObject<JDCloudClient>{
    @private
    NSString* _userAgent;
    NSString* _serviceName;
    NSString* _version;
    }

    @property (strong,readonly,nonatomic) NSString* userAgent;

    @property (strong,readonly,nonatomic) NSString* serviceName;

    @property (strong,readonly,nonatomic) NSString* version;

    @property (strong,nonatomic) NSString* contentType;

    @property (strong,nonatomic) Credential* credential;

    @property (strong,nonatomic) SDKEnvironment* sdkEnvironment;

    @property (strong,nonatomic) NSMutableDictionary* customHeader;

    @property  (strong,nonatomic) NSString* httpRequestProtocol;

    -(void) addCustomerHeaderWithKey:(NSString*) key
    value:(NSString*) value;

    -(id)initWithGlobalConfig;

    -(id)initWithCredential:(Credential*)credential
    sdkEnvironment:(SDKEnvironment*)sdkEnvironment;
    -(id)initWithCredential:(Credential*)credential;
    /**
    createInstance sync request
    @param createInstanceRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createInstanceResponse` the request response data model
    */
    -(NSDictionary*) createInstanceSyncWithRequest:(AntiproCreateInstanceRequest*) createInstanceRequest;

    -(void)createInstanceAsyncWithRequest:(AntiproCreateInstanceRequest*) createInstanceRequest
    completionHandler:(void(^)(int statusCode,AntiproCreateInstanceResponse* _Nullable createInstanceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeCcsIpResources sync request
    @param describeCcsIpResourcesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeCcsIpResourcesResponse` the request response data model
    */
    -(NSDictionary*) describeCcsIpResourcesSyncWithRequest:(AntiproDescribeCcsIpResourcesRequest*) describeCcsIpResourcesRequest;

    -(void)describeCcsIpResourcesAsyncWithRequest:(AntiproDescribeCcsIpResourcesRequest*) describeCcsIpResourcesRequest
    completionHandler:(void(^)(int statusCode,AntiproDescribeCcsIpResourcesResponse* _Nullable describeCcsIpResourcesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteProtectedIp sync request
    @param deleteProtectedIpRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteProtectedIpResponse` the request response data model
    */
    -(NSDictionary*) deleteProtectedIpSyncWithRequest:(AntiproDeleteProtectedIpRequest*) deleteProtectedIpRequest;

    -(void)deleteProtectedIpAsyncWithRequest:(AntiproDeleteProtectedIpRequest*) deleteProtectedIpRequest
    completionHandler:(void(^)(int statusCode,AntiproDeleteProtectedIpResponse* _Nullable deleteProtectedIpResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeInstance sync request
    @param describeInstanceRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeInstanceResponse` the request response data model
    */
    -(NSDictionary*) describeInstanceSyncWithRequest:(AntiproDescribeInstanceRequest*) describeInstanceRequest;

    -(void)describeInstanceAsyncWithRequest:(AntiproDescribeInstanceRequest*) describeInstanceRequest
    completionHandler:(void(^)(int statusCode,AntiproDescribeInstanceResponse* _Nullable describeInstanceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    addProtectedIp sync request
    @param addProtectedIpRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `addProtectedIpResponse` the request response data model
    */
    -(NSDictionary*) addProtectedIpSyncWithRequest:(AntiproAddProtectedIpRequest*) addProtectedIpRequest;

    -(void)addProtectedIpAsyncWithRequest:(AntiproAddProtectedIpRequest*) addProtectedIpRequest
    completionHandler:(void(^)(int statusCode,AntiproAddProtectedIpResponse* _Nullable addProtectedIpResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeIpMonitorFlow sync request
    @param describeIpMonitorFlowRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeIpMonitorFlowResponse` the request response data model
    */
    -(NSDictionary*) describeIpMonitorFlowSyncWithRequest:(AntiproDescribeIpMonitorFlowRequest*) describeIpMonitorFlowRequest;

    -(void)describeIpMonitorFlowAsyncWithRequest:(AntiproDescribeIpMonitorFlowRequest*) describeIpMonitorFlowRequest
    completionHandler:(void(^)(int statusCode,AntiproDescribeIpMonitorFlowResponse* _Nullable describeIpMonitorFlowResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeCpsIpResources sync request
    @param describeCpsIpResourcesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeCpsIpResourcesResponse` the request response data model
    */
    -(NSDictionary*) describeCpsIpResourcesSyncWithRequest:(AntiproDescribeCpsIpResourcesRequest*) describeCpsIpResourcesRequest;

    -(void)describeCpsIpResourcesAsyncWithRequest:(AntiproDescribeCpsIpResourcesRequest*) describeCpsIpResourcesRequest
    completionHandler:(void(^)(int statusCode,AntiproDescribeCpsIpResourcesResponse* _Nullable describeCpsIpResourcesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeGeoAreas sync request
    @param describeGeoAreasRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeGeoAreasResponse` the request response data model
    */
    -(NSDictionary*) describeGeoAreasSyncWithRequest:(AntiproDescribeGeoAreasRequest*) describeGeoAreasRequest;

    -(void)describeGeoAreasAsyncWithRequest:(AntiproDescribeGeoAreasRequest*) describeGeoAreasRequest
    completionHandler:(void(^)(int statusCode,AntiproDescribeGeoAreasResponse* _Nullable describeGeoAreasResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeAttackStatistics sync request
    @param describeAttackStatisticsRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeAttackStatisticsResponse` the request response data model
    */
    -(NSDictionary*) describeAttackStatisticsSyncWithRequest:(AntiproDescribeAttackStatisticsRequest*) describeAttackStatisticsRequest;

    -(void)describeAttackStatisticsAsyncWithRequest:(AntiproDescribeAttackStatisticsRequest*) describeAttackStatisticsRequest
    completionHandler:(void(^)(int statusCode,AntiproDescribeAttackStatisticsResponse* _Nullable describeAttackStatisticsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeAttackSource sync request
    @param describeAttackSourceRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeAttackSourceResponse` the request response data model
    */
    -(NSDictionary*) describeAttackSourceSyncWithRequest:(AntiproDescribeAttackSourceRequest*) describeAttackSourceRequest;

    -(void)describeAttackSourceAsyncWithRequest:(AntiproDescribeAttackSourceRequest*) describeAttackSourceRequest
    completionHandler:(void(^)(int statusCode,AntiproDescribeAttackSourceResponse* _Nullable describeAttackSourceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    modifyInstance sync request
    @param modifyInstanceRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifyInstanceResponse` the request response data model
    */
    -(NSDictionary*) modifyInstanceSyncWithRequest:(AntiproModifyInstanceRequest*) modifyInstanceRequest;

    -(void)modifyInstanceAsyncWithRequest:(AntiproModifyInstanceRequest*) modifyInstanceRequest
    completionHandler:(void(^)(int statusCode,AntiproModifyInstanceResponse* _Nullable modifyInstanceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeProtectionOutline sync request
    @param describeProtectionOutlineRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeProtectionOutlineResponse` the request response data model
    */
    -(NSDictionary*) describeProtectionOutlineSyncWithRequest:(AntiproDescribeProtectionOutlineRequest*) describeProtectionOutlineRequest;

    -(void)describeProtectionOutlineAsyncWithRequest:(AntiproDescribeProtectionOutlineRequest*) describeProtectionOutlineRequest
    completionHandler:(void(^)(int statusCode,AntiproDescribeProtectionOutlineResponse* _Nullable describeProtectionOutlineResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeProtectionRule sync request
    @param describeProtectionRuleRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeProtectionRuleResponse` the request response data model
    */
    -(NSDictionary*) describeProtectionRuleSyncWithRequest:(AntiproDescribeProtectionRuleRequest*) describeProtectionRuleRequest;

    -(void)describeProtectionRuleAsyncWithRequest:(AntiproDescribeProtectionRuleRequest*) describeProtectionRuleRequest
    completionHandler:(void(^)(int statusCode,AntiproDescribeProtectionRuleResponse* _Nullable describeProtectionRuleResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    modifyInstanceName sync request
    @param modifyInstanceNameRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifyInstanceNameResponse` the request response data model
    */
    -(NSDictionary*) modifyInstanceNameSyncWithRequest:(AntiproModifyInstanceNameRequest*) modifyInstanceNameRequest;

    -(void)modifyInstanceNameAsyncWithRequest:(AntiproModifyInstanceNameRequest*) modifyInstanceNameRequest
    completionHandler:(void(^)(int statusCode,AntiproModifyInstanceNameResponse* _Nullable modifyInstanceNameResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeProtectedIpList sync request
    @param describeProtectedIpListRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeProtectedIpListResponse` the request response data model
    */
    -(NSDictionary*) describeProtectedIpListSyncWithRequest:(AntiproDescribeProtectedIpListRequest*) describeProtectedIpListRequest;

    -(void)describeProtectedIpListAsyncWithRequest:(AntiproDescribeProtectedIpListRequest*) describeProtectedIpListRequest
    completionHandler:(void(^)(int statusCode,AntiproDescribeProtectedIpListResponse* _Nullable describeProtectedIpListResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeInstances sync request
    @param describeInstancesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeInstancesResponse` the request response data model
    */
    -(NSDictionary*) describeInstancesSyncWithRequest:(AntiproDescribeInstancesRequest*) describeInstancesRequest;

    -(void)describeInstancesAsyncWithRequest:(AntiproDescribeInstancesRequest*) describeInstancesRequest
    completionHandler:(void(^)(int statusCode,AntiproDescribeInstancesResponse* _Nullable describeInstancesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeAttackLogs sync request
    @param describeAttackLogsRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeAttackLogsResponse` the request response data model
    */
    -(NSDictionary*) describeAttackLogsSyncWithRequest:(AntiproDescribeAttackLogsRequest*) describeAttackLogsRequest;

    -(void)describeAttackLogsAsyncWithRequest:(AntiproDescribeAttackLogsRequest*) describeAttackLogsRequest
    completionHandler:(void(^)(int statusCode,AntiproDescribeAttackLogsResponse* _Nullable describeAttackLogsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    checkInstanceName sync request
    @param checkInstanceNameRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `checkInstanceNameResponse` the request response data model
    */
    -(NSDictionary*) checkInstanceNameSyncWithRequest:(AntiproCheckInstanceNameRequest*) checkInstanceNameRequest;

    -(void)checkInstanceNameAsyncWithRequest:(AntiproCheckInstanceNameRequest*) checkInstanceNameRequest
    completionHandler:(void(^)(int statusCode,AntiproCheckInstanceNameResponse* _Nullable checkInstanceNameResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeAttackTypeCount sync request
    @param describeAttackTypeCountRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeAttackTypeCountResponse` the request response data model
    */
    -(NSDictionary*) describeAttackTypeCountSyncWithRequest:(AntiproDescribeAttackTypeCountRequest*) describeAttackTypeCountRequest;

    -(void)describeAttackTypeCountAsyncWithRequest:(AntiproDescribeAttackTypeCountRequest*) describeAttackTypeCountRequest
    completionHandler:(void(^)(int statusCode,AntiproDescribeAttackTypeCountResponse* _Nullable describeAttackTypeCountResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    modifyProtectionRule sync request
    @param modifyProtectionRuleRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifyProtectionRuleResponse` the request response data model
    */
    -(NSDictionary*) modifyProtectionRuleSyncWithRequest:(AntiproModifyProtectionRuleRequest*) modifyProtectionRuleRequest;

    -(void)modifyProtectionRuleAsyncWithRequest:(AntiproModifyProtectionRuleRequest*) modifyProtectionRuleRequest
    completionHandler:(void(^)(int statusCode,AntiproModifyProtectionRuleResponse* _Nullable modifyProtectionRuleResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeElasticIpResources sync request
    @param describeElasticIpResourcesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeElasticIpResourcesResponse` the request response data model
    */
    -(NSDictionary*) describeElasticIpResourcesSyncWithRequest:(AntiproDescribeElasticIpResourcesRequest*) describeElasticIpResourcesRequest;

    -(void)describeElasticIpResourcesAsyncWithRequest:(AntiproDescribeElasticIpResourcesRequest*) describeElasticIpResourcesRequest
    completionHandler:(void(^)(int statusCode,AntiproDescribeElasticIpResourcesResponse* _Nullable describeElasticIpResourcesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeOperationRecords sync request
    @param describeOperationRecordsRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeOperationRecordsResponse` the request response data model
    */
    -(NSDictionary*) describeOperationRecordsSyncWithRequest:(AntiproDescribeOperationRecordsRequest*) describeOperationRecordsRequest;

    -(void)describeOperationRecordsAsyncWithRequest:(AntiproDescribeOperationRecordsRequest*) describeOperationRecordsRequest
    completionHandler:(void(^)(int statusCode,AntiproDescribeOperationRecordsResponse* _Nullable describeOperationRecordsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    /**
    antipro common sync request
    @param  jdcloudDataRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
    */
    -(NSDictionary*) antiproCommonSyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                           url:(NSString*) url
                                        method:(NSString*) method;

    -(void)antiproCommonAsyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                  url:(NSString*) url
                               method:(NSString*) method
                    completionHandler:(void(^)(int statusCode, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    @end


    #endif /* AntiproClient_h */
